Personal computers were originally created for a single user, and encompassed one or more of the following: one or more operating systems, native and third party applications, user settings, etc. Now, however, the concept of virtualization has made it easier for organizations to provide similar computational functionality, without the cost of purchasing and maintaining individual personal computers. Virtualization allows users to interact with the operating system and applications stored therein in much the same way that they would a standalone personal computer. Desktop virtualization technology allows multiple instances of an operating system to be instantiated on one or more servers (e.g., server farms), thereby allowing multiple users to login to the server and complete the same tasks that they would, as if they had their own personal computer.
The architecture of the desktop virtualization environment is comprised of a collection of disparate networks. These networks can span floors in a building, or offices across several continents. The complexity of creating and maintaining these networks increases with the size of the network. Network administrators can spend weeks, if not months, properly configuring a network supporting a desktop virtualization environment.
In order to provide the services offered by a desktop in a virtual environment, server farms are selected to provide the applications and programs required by users connected to a server farm. Server farms are virtual instances of physical server farms. Therefore a group of machines (e.g., a delivery group) can be used to provide any necessary hardware and software for supporting the applications and programs requested by a user connected to a server farm. The current methods and systems for assigning machines from a delivery group to a server farm are limited to assigning one delivery group to a single server farm. A delivery group can contain more machines than are required by a server farm, and therefore extra machines assigned to a server farm may go unused, resulting in inefficient resource allocation.